package com.tako.utils;

/**
 * 计时器，可返回自计时器创建到此刻的时间及自计时器重置到此刻的时间
 *
 * @author zhanglin
 * @date 2021/9/28
 */
public class TimeTicker {

    private long startTime;

    private long secondStartTime;

    public TimeTicker() {
        startTime = System.currentTimeMillis();
        secondStartTime = startTime;
    }

    /**
     * 重置第二计时器
     */
    public void resetSecondTime() {
        secondStartTime = System.currentTimeMillis();
    }

    /**
     * 返回从上次重置到此刻的毫秒数
     *
     * @return
     */
    public long getSecondTime() {
        return System.currentTimeMillis() - secondStartTime;
    }

    /**
     * 获取并重置第二计时器
     *
     * @return 上次重置到此刻的毫秒数
     */
    public long getAndResetSecondTime() {
        long ret = System.currentTimeMillis() - secondStartTime;
        secondStartTime = System.currentTimeMillis();
        return ret;
    }

    /**
     * 返回从上次重置到此刻的秒数
     *
     * @return
     */
    public long getSecondSecondsTime() {
        return getSecondTime() / 1000;
    }


    public String getAndResetSecondSecondsTime() {
        long ret = System.currentTimeMillis() - secondStartTime;
        String format = String.format("%.3fs", ret / 1000.0);
        secondStartTime = System.currentTimeMillis();
        return format;
    }

    /**
     * 返回从实例创建到此刻的毫秒数
     *
     * @return
     */
    public long getTotalTime() {
        return System.currentTimeMillis() - startTime;
    }

    /**
     * 返回从实例创建到此刻的秒数
     *
     * @return
     */
    public long getTotalSecondsTime() {
        return getTotalTime() / 1000;
    }
}
